<?php

class client_model extends CI_Model {
	
	var $adresId;
	var $contactgegevensId;
	
	
	public function getClients(){
		$this->db->select('*');
		$data = $this->db->get('client');
		if($data->result()){
			return $data->result();
		}else {
			return null;
		}
	}
	
	/*
	 * Deze functie word uitgevoerd wanneer er een nieuwe client word aangemaakt door de gebruiker
	 * De contactgegevens, adres en de algemene client data word in de database gezet.
	 * Deze gegevens worden uit een externe functie gehaald om herhaling te voorkomen.
	 */
	public function newClient(){
		$insert = $this->db->insert('contactgegevens', $this->arrayContactData());
		$this->contactgegevensId = $this->db->insert_id();
			
		$insert = $this->db->insert('adres', $this->arrayAdresData());
		$this->adresId = $this->db->insert_id();
			
		$insert = $this->db->insert('client', $this->arrayClientData());
	}
	
	/*
	 * Deze functie word uitgevoerd wanneer je een "bewerk client" formulier opstuur.
	 * De bestaande client gegevens worden hier aangepast.
	 */
	public function updateClient(){
		$this->contactgegevensId = $this->uri->segment(6);
		$this->db->where('contactgegevens_id', $this->contactgegevensId);
		$this->db->update('contactgegevens', $this->arrayContactData()); 
		
		$this->adresId = $this->uri->segment(5);
		$this->db->where('adres_id', $this->adresId);
		$this->db->update('adres', $this->arrayAdresData()); 
		
		$client_id = $this->uri->segment(4);
		$this->db->where('client_id', $client_id);
		$this->db->update('client', $this->arrayClientData()); 
	}
	
	/*
	 * Deze functie word uitgevoerd wanneer je op de knop bewerk client klikt dit zorgt er voor dat
	 * de juiste client data word geladen uit de database.
	 */
	public function editClient($id){
		return $this->getClient($id);
	}
	
	/*
	 * Zorgt ervoor dat alle client data word verwijderd (de database functie CASCADE zorgt er voor dat
	 * alle onderliggende client data word verwijderd.
	 */
	public function deleteClient($id){
		$this->db->where('client_id', $id);
		$this->db->delete('client');
	}
	
	/*
	 * hier word de juiste client data geladen, indien er een $id is doorgegeven als parameter
	 * dan word gezocht op die clientId.
	 */
	public function getClient($id = null){
		$this->db->select('*');
		$this->db->join('adres', 'adres.adres_id = client.adres_id', 'inner');
		$this->db->join('contactgegevens', 'contactgegevens.contactgegevens_id = client.contactgegevens_id', 'inner');
		$this->db->order_by('achternaam', 'asc');  
		
		if (!$id == null){
			$this->db->where('client_id', $id);
			
		}
		
		$data = $this->db->get('client');
		
		
		if($data->result()){
			return $data->result();
		}else {
			return null;
		}
		
		
	}
	
	/*
	 * hier return ik een array die ik verschillende keren opvraag. 
	 */
	private function arrayContactData(){
		$contactData = array(
			'vaste_telefoon_nr' => $this->input->post('vaste_telefoon_nr'),
			'email' => $this->input->post('email'),
			'mobiel_telefoon_nr' => $this->input->post('mobiel_telefoon_nr')
		);
		
		return $contactData;
	}
	
	private function arrayAdresData(){
		$adresData = array(
			'straat' => $this->input->post('straat'),
			'huisnummer' => $this->input->post('huisnummer'),
			'woonplaats' => $this->input->post('woonplaats'),
			'postcode' => $this->input->post('postcode'),
			'wijk' => $this->input->post('wijk')
		);
		
		return $adresData;
	}
	
	private function arrayClientData(){
		$clientData = array(
			'voornaam' => $this->input->post('voornaam'),
			'achternaam' => $this->input->post('achternaam'),
			'leeftijd' => $this->input->post('leeftijd'),			
			'adres_id' => $this->adresId,
			'contactgegevens_id' => $this->contactgegevensId						
		);
		
		return $clientData;
	}
	
}